package com.wang.auth.utils;

import com.wang.model.system.SysMenu;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wjh
 * @create 2023-05-20
 */
public class MenuHelper {

    /**
     * 递归条件，只有parentId为0的对象才能参与递归，也就是顶级菜单（系统管理）
     * @param menuList  菜单集合
     * @return 返回的也是菜单集合，不过tree比参数menuList可能要小，因为SysMenu里面有个List<SysMenu>属性用来存储当前菜单的子菜单
     */
    public static List<SysMenu> buildTree(List<SysMenu> menuList){
        List<SysMenu> tree = new ArrayList<>();
        for (SysMenu sysMenu : menuList) {
            if (sysMenu.getParentId() == 0){
                tree.add(getChild(sysMenu,menuList));
            }
        }
        return tree;
    }

    public static SysMenu getChild(SysMenu parentMenu, List<SysMenu> menuList){
        for (SysMenu childMenu : menuList) {
            if (parentMenu.getChildren() == null || parentMenu.getChildren().isEmpty()){
                parentMenu.setChildren(new ArrayList<>());
            }
            if (parentMenu.getId().longValue() == childMenu.getParentId().longValue()){
                parentMenu.getChildren().add(getChild(childMenu,menuList));
            }
        }
        return parentMenu;
    }
}
